package upcasting;

public class Cat extends Animal{
    String color;///猫特有的
    public Cat(String name ,int age){
        super(name,age);
    }

    @Override
    public void eat() {
        System.out.println("小猫正在吃饭");
    }
    //作返回值，返回任意子类对象
    public Animal funcation(){
        return new Cat("小环",2);
    }


    //方法传参：形参作为父类型引用，可以接收任意子类的对象
    public static void funcation2(Animal animal){
        animal.eat();//此时一个引用，调用同一个方法，因为这个引用引用的对象不一样，
        // 导致调用这个方法所表现的行为不一样，这种思想，叫做多态。
    }
    public static void main(String[] args) {
        //直接赋值，将子类对象赋给父类对象
        Cat cat = new Cat("小蔡",4);
        Animal animal = cat;
        Animal animal1 = new Animal("小黄",4);
        //animal.color;//error 不能访问的原因是父类没有这个属性，此时的animal只能调用自己有的属性
    funcation2(cat);
    funcation2(animal1);
    }
}
